Introduction

Most species of seagulls are migratory birds. They change locations based on temperature, breeding season, and food scarcity. Two organizations, LifeWatch and Flanders Marine Institute, worked together to collect data on the flight’s of three Lesser Black-backed Gulls. They attached lightweight, solar powered GPS devices to the bird’s ankles that record several data points. For more information, visit their site by clicking here.

The data spans from August 2013 to April 2014 and covers many countries along the outer coast of Eastern Europe and the NorthEast of Africa. The depth of information about their flight data allows us to ask some key questions. Did these seagull’s travel together when migrating or do their flight patterns differ? As for the flight itself, what is a common speed and altitude for traveling seagull’s?

Eric, Nico, and Sanne’s 2013 Journies

A Late Summer in France

Eric, Nico and Sanne’s 2013 Flight Paths

sample

Flight Altitude

In this data set, the altitude is measured in feet. In order to observe altitude trends, we will be comparing Eric’s altitudes during the first week of January and the first week of March. It is important to observe only one bird so that we have a constant.

Eric’s January Data

Eric’s altitude during the first week of January was between -246 ft and 92 ft. His flight pattern shows that he flies at a low altitude when he heads towards a destination at sea. He then returns to land at a higher flight altitude. This makes sense because sea levels are lower than land and there are less obstacles to fly over. His altitude patterns may be a tool to conserve energy.

Eric’s March Data

Eric’s altitude in the first week of March was between -438 ft and 317 ft. This is a much broader range than his altitude in the first week of January. It makes sense that gulls fly at higher altitudes in warmer months since the prevailing winds are picking up in force. Bird’s use the strength of prevailing winds to save energy as the months get warmer. Compared to January, Eric is not traveling out to sea as much and when he does, it is not as far of a distance. This could indicate that perhaps Eric is traveling for a food source that becomes easier to catch in warmer weather, such as fish.

Flight Speed

LS0tCnRpdGxlOiAnVGhlIEZsaWdodCBvZiBHdWxsczogTmljbywgRXJpYyAmIFNhbm5lJwphdXRob3I6ICJBbGRyaWMgTWFydGluZXotT2xzb24sIEF1Z3VzdGEgRnJpY2tlLCBDYXJvbGluYSBMb3BleiIKb3V0cHV0OiAKICBodG1sX2RvY3VtZW50OgogICAga2VlcF9tZDogVFJVRQogICAgdG9jOiBUUlVFCiAgICB0b2NfZmxvYXQ6IFRSVUUKICAgIGRmX3ByaW50OiBwYWdlZAogICAgY29kZV9kb3dubG9hZDogdHJ1ZQotLS0KPGNlbnRlcj4hW10oc2VhZ3VsbC1zdW5zZXQtZ3Jhdml0eXgtZGVzaWducy5QTkcpPC9jZW50ZXI+CgoKCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFLCBlY2hvID0gRkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSwgZXJyb3I9VFJVRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSkKYGBgCgpgYGB7ciBsaWJyYXJpZXMsIGVjaG8gPSBGQUxTRX0KbGlicmFyeSh0aWR5dmVyc2UpICAgICAjIGZvciBkYXRhIGNsZWFuaW5nIGFuZCBwbG90dGluZwpsaWJyYXJ5KGdhcmRlblIpICAgICAgICMgZm9yIExpc2EncyBnYXJkZW4gZGF0YQpsaWJyYXJ5KGx1YnJpZGF0ZSkgICAgICMgZm9yIGRhdGUgbWFuaXB1bGF0aW9uCmxpYnJhcnkob3BlbmludHJvKSAgICAgIyBmb3IgdGhlIGFiYnIyc3RhdGUoKSBmdW5jdGlvbgpsaWJyYXJ5KHBhbG1lcnBlbmd1aW5zKSMgZm9yIFBhbG1lciBwZW5ndWluIGRhdGEKbGlicmFyeShtYXBzKSAgICAgICAgICAjIGZvciBtYXAgZGF0YQpsaWJyYXJ5KGdnbWFwKSAgICAgICAgICMgZm9yIG1hcHBpbmcgcG9pbnRzIG9uIG1hcHMKbGlicmFyeShncGxvdHMpICAgICAgICAjIGZvciBjb2wyaGV4KCkgZnVuY3Rpb24KbGlicmFyeShSQ29sb3JCcmV3ZXIpICAjIGZvciBjb2xvciBwYWxldHRlcwpsaWJyYXJ5KHNmKSAgICAgICAgICAgICMgZm9yIHdvcmtpbmcgd2l0aCBzcGF0aWFsIGRhdGEKbGlicmFyeShsZWFmbGV0KSAgICAgICAjIGZvciBoaWdobHkgY3VzdG9taXphYmxlIG1hcHBpbmcKbGlicmFyeShnZ3RoZW1lcykgICAgICAjIGZvciBtb3JlIHRoZW1lcyAoaW5jbHVkaW5nIHRoZW1lX21hcCgpKQpsaWJyYXJ5KHBsb3RseSkgICAgICAgICMgZm9yIHRoZSBnZ3Bsb3RseSgpIC0gYmFzaWMgaW50ZXJhY3Rpdml0eQpsaWJyYXJ5KGdnYW5pbWF0ZSkgICAgICMgZm9yIGFkZGluZyBhbmltYXRpb24gbGF5ZXJzIHRvIGdncGxvdHMKbGlicmFyeSh0cmFuc2Zvcm1yKSAgICAjIGZvciAidHdlZW5pbmciIChnZ2FuaW1hdGUpCmxpYnJhcnkoYmFieW5hbWVzKSAgICAjIGJhYnkgbmFtZXMKI2xpYnJhcnkoZ2lmc2tpKSAgICAgICAgIyBuZWVkIHRoZSBsaWJyYXJ5IGZvciBjcmVhdGluZyBnaWZzIGJ1dCBkb24ndCBuZWVkIHRvIGxvYWQgZWFjaCB0aW1lCmxpYnJhcnkoc2hpbnkpICAgICAgICAgIyBmb3IgY3JlYXRpbmcgaW50ZXJhY3RpdmUgYXBwcwp0aGVtZV9zZXQodGhlbWVfbWluaW1hbCgpKQpgYGAKCmBgYHtyIGRhdGEsIGVjaG8gPSBGQUxTRX0KIyBCaXJkIE1pZ3JhdGlvbiBEYXRhCmJpcmRfbWlncmF0aW9uIDwtIHJlYWRfY3N2KCJiaXJkX21pZ3JhdGlvbi5jc3YiKQpgYGAKCiMjIEludHJvZHVjdGlvbgohW10ocHVycGxlZG90cy5QTkcpCgpNb3N0IHNwZWNpZXMgb2Ygc2VhZ3VsbHMgYXJlIG1pZ3JhdG9yeSBiaXJkcy4gVGhleSBjaGFuZ2UgbG9jYXRpb25zIGJhc2VkIG9uIHRlbXBlcmF0dXJlLCBicmVlZGluZyBzZWFzb24sIGFuZCBmb29kIHNjYXJjaXR5LiBUd28gb3JnYW5pemF0aW9ucywgTGlmZVdhdGNoIGFuZCBGbGFuZGVycyBNYXJpbmUgSW5zdGl0dXRlLCB3b3JrZWQgdG9nZXRoZXIgdG8gY29sbGVjdCBkYXRhIG9uIHRoZSBmbGlnaHQncyBvZiB0aHJlZSBMZXNzZXIgQmxhY2stYmFja2VkIEd1bGxzLiBUaGV5IGF0dGFjaGVkIGxpZ2h0d2VpZ2h0LCBzb2xhciBwb3dlcmVkIEdQUyBkZXZpY2VzIHRvIHRoZSBiaXJkJ3MgYW5rbGVzIHRoYXQgcmVjb3JkIHNldmVyYWwgZGF0YSBwb2ludHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCB2aXNpdCB0aGVpciBzaXRlIGJ5IGNsaWNraW5nIFtoZXJlIF0oaHR0cHM6Ly9vc2NpYmlvLmluYm8uYmUvYmxvZy9iaXJkLXRyYWNraW5nLWRhdGEtcHVibGlzaGVkLykuCgpUaGUgZGF0YSBzcGFucyBmcm9tIEF1Z3VzdCAyMDEzIHRvIEFwcmlsIDIwMTQgYW5kIGNvdmVycyBtYW55IGNvdW50cmllcyBhbG9uZyB0aGUgb3V0ZXIgY29hc3Qgb2YgRWFzdGVybiBFdXJvcGUgYW5kIHRoZSBOb3J0aEVhc3Qgb2YgQWZyaWNhLiBUaGUgZGVwdGggb2YgaW5mb3JtYXRpb24gYWJvdXQgdGhlaXIgZmxpZ2h0IGRhdGEgYWxsb3dzIHVzIHRvIGFzayBzb21lIGtleSBxdWVzdGlvbnMuIERpZCB0aGVzZSBzZWFndWxsJ3MgdHJhdmVsIHRvZ2V0aGVyIHdoZW4gbWlncmF0aW5nIG9yIGRvIHRoZWlyIGZsaWdodCBwYXR0ZXJucyBkaWZmZXI/IEFzIGZvciB0aGUgZmxpZ2h0IGl0c2VsZiwgd2hhdCBpcyBhIGNvbW1vbiBzcGVlZCBhbmQgYWx0aXR1ZGUgZm9yIHRyYXZlbGluZyBzZWFndWxsJ3M/IAoKIyMgRXJpYywgTmljbywgYW5kIFNhbm5lJ3MgMjAxMyBKb3VybmllcyAKIVtdKG9yYW5nZWRvdHMuUE5HKQoKKipBIExhdGUgU3VtbWVyIGluIEZyYW5jZSoqCgoKYGBge3IsIGV2YWwgPSBGQUxTRSwgZWNobyA9IEZBTFNFfQpGUkFOQ0UgPC0gZ2V0X3N0YW1lbm1hcCgKICAgIGJib3ggPSBjKGxlZnQgPSAtLjYyMiwgYm90dG9tID0gNDguNiwgcmlnaHQgPSA2LjMsIHRvcCA9IDUwLjYpLAogICAgbWFwdHlwZSA9ICJ0ZXJyYWluIiwKICAgIHpvb20gPSA3KQoKYmlyZF9taWdyYXRpb24gPC0gcmVhZF9jc3YoImJpcmRfbWlncmF0aW9uLmNzdiIpICU+JSAKICBzZWxlY3QoLVgxKSAKCkZSQU5DRXBhdGhkYXRlcyA8LSBiaXJkX21pZ3JhdGlvbiAlPiUgCiAgbXV0YXRlKGRhdGUyID0gZGF0ZV90aW1lKSAlPiUgCiAgdGlkeXI6OnNlcGFyYXRlKGRhdGVfdGltZSwgYygiZGF0ZSIsICJ0aW1lIiksIHNlcCA9ICIgIikgJT4lIAogIGZpbHRlcihkYXRlIDwgICIyMDEzLTktMzAiKSAlPiUgCiAgc2VsZWN0KC1kZXZpY2VfaW5mb19zZXJpYWwpICU+JSAKICBtdXRhdGUobWluX2xhdCA9IG1pbihsYXRpdHVkZSkpICU+JSAgICAgICNtaW4gPSAxNAogIG11dGF0ZShtYXhfbGF0ID0gbWF4KGxhdGl0dWRlKSkgJT4lICAgICAgI21heCA9IDUxCiAgbXV0YXRlKG1pbl9sb25nID0gbWluKGxvbmdpdHVkZSkpICU+JSAgICAjbWluID0gLTE3CiAgbXV0YXRlKG1heF9sb25nID0gbWF4KGxvbmdpdHVkZSkpICAgICAgICAjbWF4ID0gNQoKRlJBTkNFX2FuaW0gPC0gZ2dtYXAoRlJBTkNFKSsKICAgIGdlb21fcGF0aChkYXRhID0gRlJBTkNFcGF0aGRhdGVzLAogICAgICAgICAgICAgIGFlcyh4ID0gbG9uZ2l0dWRlLAogICAgICAgICAgICAgICAgIHkgPSBsYXRpdHVkZSwKICAgICAgICAgICAgICAgICBjb2xvciA9IGJpcmRfbmFtZQogICAgICAgICAgICAgICAgICkpKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjKCJOaWNvIiA9ICIjNjYwMDY2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2FubmUiID0gIiNDQzAwNjYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFcmljIiA9ICIzMzk5RkYiKSkrCiAgZ2VvbV9wb2ludChkYXRhID0gRlJBTkNFcGF0aGRhdGVzLAogICAgICAgICAgICAgIGFlcyh4ID0gbG9uZ2l0dWRlLAogICAgICAgICAgICAgICAgIHkgPSBsYXRpdHVkZSwKICAgICAgICAgICAgICAgICBjb2xvciA9IGJpcmRfbmFtZQogICAgICAgICAgICAgICAgICkpKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjKCJOaWNvIiA9ICIjNjYwMDY2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2FubmUiID0gIiNDQzAwNjYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFcmljIiA9ICIzMzk5RkYiKSkrCiAgCiAgICBsYWJzKHRpdGxlID0gIk5pY28gVG9vayBPZmYgTXVjaCBFYXJsaWVyIFRoYW4gdGhlIE90aGVyIFR3byIsCiAgICAgICAgIHN1YnRpdGxlID0gIlRpbWU6IHtmcmFtZV9hbG9uZ30iKSsKICAKICB0cmFuc2l0aW9uX3JldmVhbChkYXRlMikKCmFuaW1hdGUoRlJBTkNFX2FuaW0sIG5mcmFtZXMgPSAyMDApCmBgYAoKYGBge3IsIGV2YWwgPSBGQUxTRSwgZWNobyA9IEZBTFNFfQphbmltX3NhdmUoIkZSQU5DRV9naWYuZ2lmIikgCmBgYAoKCmBgYHtyLCBlY2hvID0gRkFMU0V9CmtuaXRyOjppbmNsdWRlX2dyYXBoaWNzKCJGUkFOQ0VfZ2lmLmdpZiIpCmBgYAoKKipFcmljLCBOaWNvIGFuZCBTYW5uZSdzIDIwMTMgRmxpZ2h0IFBhdGhzKioKCgpgYGB7ciwgZXZhbCA9IEZBTFNFLCBlY2hvID0gRkFMU0V9CldIT0xFRkxJR0hUIDwtIGdldF9zdGFtZW5tYXAoCiAgICBiYm94ID0gYyhsZWZ0ID0gLTE3LCBib3R0b20gPSAxNCwgcmlnaHQgPSA1LCB0b3AgPSA1MSksCiAgICBtYXB0eXBlID0gInRlcnJhaW4iLAogICAgem9vbSA9IDUpCgpiaXJkX21pZ3JhdGlvbiA8LSByZWFkX2NzdigiYmlyZF9taWdyYXRpb24uY3N2IikgJT4lIAogIHNlbGVjdCgtWDEpIAoKV0hPTEVGTElHSFRwYXRoZGF0ZXMgPC0gYmlyZF9taWdyYXRpb24gJT4lIAogIG11dGF0ZShkYXRlMiA9IGRhdGVfdGltZSkgJT4lIAogIHRpZHlyOjpzZXBhcmF0ZShkYXRlX3RpbWUsIGMoImRhdGUiLCAidGltZSIpLCBzZXAgPSAiICIpICU+JSAKICBmaWx0ZXIoZGF0ZSA8ICAiMjAxMy0xMi0zMCIpICU+JSAKICBzZWxlY3QoLWRldmljZV9pbmZvX3NlcmlhbCkgJT4lIAogIG11dGF0ZShtaW5fbGF0ID0gbWluKGxhdGl0dWRlKSkgJT4lICAgICAgI21pbiA9IDE0CiAgbXV0YXRlKG1heF9sYXQgPSBtYXgobGF0aXR1ZGUpKSAlPiUgICAgICAjbWF4ID0gNTEKICBtdXRhdGUobWluX2xvbmcgPSBtaW4obG9uZ2l0dWRlKSkgJT4lICAgICNtaW4gPSAtMTcKICBtdXRhdGUobWF4X2xvbmcgPSBtYXgobG9uZ2l0dWRlKSkgICAgICAgICNtYXggPSA1CgpXSE9MRUZMSUdIVF9hbmltIDwtIGdnbWFwKFdIT0xFRkxJR0hUKSsKICAgIGdlb21fcGF0aChkYXRhID0gV0hPTEVGTElHSFRwYXRoZGF0ZXMsCiAgICAgICAgICAgICAgYWVzKHggPSBsb25naXR1ZGUsCiAgICAgICAgICAgICAgICAgeSA9IGxhdGl0dWRlLAogICAgICAgICAgICAgICAgIGNvbG9yID0gYmlyZF9uYW1lCiAgICAgICAgICAgICAgICAgKSkrCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGMoIk5pY28iID0gIiM2NjAwNjYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTYW5uZSIgPSAiI0NDMDA2NiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVyaWMiID0gIjMzOTlGRiIpKSsKICBnZW9tX3BvaW50KGRhdGEgPSBXSE9MRUZMSUdIVHBhdGhkYXRlcywKICAgICAgICAgICAgICBhZXMoeCA9IGxvbmdpdHVkZSwKICAgICAgICAgICAgICAgICB5ID0gbGF0aXR1ZGUsCiAgICAgICAgICAgICAgICAgY29sb3IgPSBiaXJkX25hbWUKICAgICAgICAgICAgICAgICApKSsKICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygiTmljbyIgPSAiIzY2MDA2NiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNhbm5lIiA9ICIjQ0MwMDY2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXJpYyIgPSAiMzM5OUZGIikpKwogIAogICAgbGFicyh0aXRsZSA9ICJUaGUgVGhyZWUgQmlyZHMgVHJhdmVsZWQgVGhvdXNhbmRzIG9mIE1pbGVzIHRoaXMgWWVhciIsCiAgICAgICAgIHN1YnRpdGxlID0gIlRpbWU6IHtmcmFtZV9hbG9uZ30iKSsKICAKICB0cmFuc2l0aW9uX3JldmVhbChkYXRlMikKCmFuaW1hdGUoV0hPTEVGTElHSFRfYW5pbSwgbmZyYW1lcyA9IDIwMCkKYGBgCgpgYGB7ciwgZXZhbCA9IEZBTFNFLCBlY2hvID0gRkFMU0V9CmFuaW1fc2F2ZSgiV0hPTEVGTElHSFRfZ2lmLmdpZiIpIApgYGAKCmBgYHtyLCBlY2hvID0gRkFMU0V9CmtuaXRyOjppbmNsdWRlX2dyYXBoaWNzKCJXSE9MRUZMSUdIVF9naWYuZ2lmIikKYGBgCjxwIHN0eWxlPSJmb250LWZhbWlseTogSGVsdmV0aWNhLCBTYW5zLXNlcmlmO2NvbG9yOiM5OTMzOTkiPnNhbXBsZTwvcD4KCiMjIEZsaWdodCBBbHRpdHVkZQohW10ocm9zZWRvdHMuUE5HKQoKSW4gdGhpcyBkYXRhIHNldCwgdGhlIGFsdGl0dWRlIGlzIG1lYXN1cmVkIGluIGZlZXQuIEluIG9yZGVyIHRvIG9ic2VydmUgYWx0aXR1ZGUgdHJlbmRzLCB3ZSB3aWxsIGJlIGNvbXBhcmluZyBFcmljJ3MgYWx0aXR1ZGVzIGR1cmluZyB0aGUgZmlyc3Qgd2VlayBvZiBKYW51YXJ5IGFuZCB0aGUgZmlyc3Qgd2VlayBvZiBNYXJjaC4gSXQgaXMgaW1wb3J0YW50IHRvIG9ic2VydmUgb25seSBvbmUgYmlyZCBzbyB0aGF0IHdlIGhhdmUgYSBjb25zdGFudC4KICAKIyMjIEVyaWMncyBKYW51YXJ5IERhdGEKYGBge3IsIGV2YWwgPSBGQUxTRSwgZWNobyA9IEZBTFNFfQoKTW9ycm9jbyA8LSBnZXRfc3RhbWVubWFwKAogICAgYmJveCA9IGMobGVmdCA9IC05LjgsIGJvdHRvbSA9IDMwLjEsIHJpZ2h0ID0gLTkuNSwgdG9wID0gMzAuNSksCiAgICBtYXB0eXBlID0gInRlcnJhaW4iLAogICAgem9vbSA9IDEwKQoKCgpiaXJkX21pZ3JhdGlvbiA8LSByZWFkX2NzdigiYmlyZF9taWdyYXRpb24uY3N2IikgJT4lIAogIHNlbGVjdCgtWDEpIAoKICAKRXJpY19BbHRfSmFuIDwtIGJpcmRfbWlncmF0aW9uICU+JSAKICBtdXRhdGUoZGF0ZTIgPSBkYXRlX3RpbWUpICU+JSAKICB0aWR5cjo6c2VwYXJhdGUoZGF0ZV90aW1lLCBjKCJkYXRlIiwgInRpbWUiKSwgc2VwID0gIiAiKSAlPiUgCiAgZmlsdGVyKGRhdGUgPT0gYygiMjAxNC0wMS0wMSIsICIyMDE0LTAxLTAyIiwgIjIwMTQtMDEtMDMiLCAiMjAxNC0wMS0wNCIsICIyMDE0LTAxLTA1IiwgIjIwMTQtMDEtMDYiLCAiMjAxNC0wMS0wNyIpKSAlPiUgCiAgZmlsdGVyKGFsdGl0dWRlIDwgNDAwMCkgJT4lIAogIGZpbHRlcihiaXJkX25hbWUgPT0gIkVyaWMiKSAlPiUgCiAgc2VsZWN0KC1kZXZpY2VfaW5mb19zZXJpYWwpICU+JSAKICBtdXRhdGUobWluX2xhdCA9IG1pbihsYXRpdHVkZSkpICU+JSAgICAgICNtaW4gPSAzMC4xCiAgbXV0YXRlKG1heF9sYXQgPSBtYXgobGF0aXR1ZGUpKSAlPiUgICAgICAjbWF4ID0gMzAuNQogIG11dGF0ZShtaW5fbG9uZyA9IG1pbihsb25naXR1ZGUpKSAlPiUgICAgI21pbiA9IC05LjkKICBtdXRhdGUobWF4X2xvbmcgPSBtYXgobG9uZ2l0dWRlKSkgICAgICAgICNtYXggPSAtOS41CiAgCkVyaWNBbHRKYW5fZ2dhbmltIDwtIGdnbWFwKE1vcnJvY28pKwogICAgZ2VvbV9wYXRoKGRhdGEgPSBFcmljX0FsdF9KYW4sCiAgICAgICAgICAgICAgYWVzKHggPSBsb25naXR1ZGUsCiAgICAgICAgICAgICAgICAgeSA9IGxhdGl0dWRlLAogICAgICAgICAgICAgICAgIGNvbG9yID0gYWx0aXR1ZGUpKSsKICBzY2FsZV9jb2xvcl9ncmFkaWVudChoaWdoID0gJyNGRjY2MDAnLCBsb3cgPSAnIzY2MDA2NicpKwogIGdlb21fcG9pbnQoZGF0YSA9IEVyaWNfQWx0X0phbiwKICAgICAgICAgICAgIGFlcyh4ID0gbG9uZ2l0dWRlLAogICAgICAgICAgICAgICAgIHkgPSBsYXRpdHVkZSksCiAgICAgICAgICAgICAgICAgY29sb3IgPSAiIzAwMDAwMCIsCiAgICAgICAgICAgICAgICAgc2l6ZSA9IDMpKwogIAogICAgbGFicyh0aXRsZSA9ICJFcmljJ3MgRmxpZ2h0IEFsdGl0dWRlIEphbnVhcnkiLAogICAgICAgICBzdWJ0aXRsZSA9ICJUaW1lOiB7ZnJhbWVfYWxvbmd9IikrCiAgCiAgdHJhbnNpdGlvbl9yZXZlYWwoZGF0ZTIpCmFuaW1hdGUoRXJpY0FsdEphbl9nZ2FuaW0sIG5mcmFtZXMgPSAyMDApCmBgYAoKYGBge3IsIGV2YWwgPSBGQUxTRSwgZWNobyA9IEZBTFNFfQphbmltX3NhdmUoIkVyaWNBbHRKYW4uZ2lmIikgCmBgYAoKCmBgYHtyLCBlY2hvID0gRkFMU0V9CmtuaXRyOjppbmNsdWRlX2dyYXBoaWNzKCJFcmljQWx0SmFuLmdpZiIpCmBgYAoKRXJpYydzIGFsdGl0dWRlIGR1cmluZyB0aGUgZmlyc3Qgd2VlayBvZiBKYW51YXJ5IHdhcyBiZXR3ZWVuIC0yNDYgZnQgYW5kIDkyIGZ0LiBIaXMgZmxpZ2h0IHBhdHRlcm4gc2hvd3MgdGhhdCBoZSBmbGllcyBhdCBhIGxvdyBhbHRpdHVkZSB3aGVuIGhlIGhlYWRzIHRvd2FyZHMgYSBkZXN0aW5hdGlvbiBhdCBzZWEuIEhlIHRoZW4gcmV0dXJucyB0byBsYW5kIGF0IGEgaGlnaGVyIGZsaWdodCBhbHRpdHVkZS4gVGhpcyBtYWtlcyBzZW5zZSBiZWNhdXNlIHNlYSBsZXZlbHMgYXJlIGxvd2VyIHRoYW4gbGFuZCBhbmQgdGhlcmUgYXJlIGxlc3Mgb2JzdGFjbGVzIHRvIGZseSBvdmVyLiBIaXMgYWx0aXR1ZGUgcGF0dGVybnMgbWF5IGJlIGEgdG9vbCB0byBjb25zZXJ2ZSBlbmVyZ3kuCgojIyMgRXJpYydzIE1hcmNoIERhdGEKCmBgYHtyLCBldmFsID0gRkFMU0UsIGVjaG8gPSBGQUxTRX0KRXJpY19BbHRfTWFyY2ggPC0gYmlyZF9taWdyYXRpb24gJT4lIAogIG11dGF0ZShkYXRlMiA9IGRhdGVfdGltZSkgJT4lIAogIHRpZHlyOjpzZXBhcmF0ZShkYXRlX3RpbWUsIGMoImRhdGUiLCAidGltZSIpLCBzZXAgPSAiICIpICU+JSAKICBmaWx0ZXIoZGF0ZSA9PSBjKCIyMDE0LTAzLTAxIiwgIjIwMTQtMDMtMDIiLCAiMjAxNC0wMy0wMyIsICIyMDE0LTAzLTA0IiwgIjIwMTQtMDMtMDUiLCAiMjAxNC0wMy0wNiIsICIyMDE0LTAzLTA3IikpICU+JSAKICBmaWx0ZXIoYmlyZF9uYW1lID09ICJFcmljIikgJT4lIAogIHNlbGVjdCgtZGV2aWNlX2luZm9fc2VyaWFsKSAlPiUgCiAgbXV0YXRlKG1pbl9sYXQgPSBtaW4obGF0aXR1ZGUpKSAlPiUgICAgIAogIG11dGF0ZShtYXhfbGF0ID0gbWF4KGxhdGl0dWRlKSkgJT4lICAgICAgCiAgbXV0YXRlKG1pbl9sb25nID0gbWluKGxvbmdpdHVkZSkpICU+JSAgICAKICBtdXRhdGUobWF4X2xvbmcgPSBtYXgobG9uZ2l0dWRlKSkKRXJpY0FsdE1hcmNoX2dnYW5pbSA8LSBnZ21hcChNb3Jyb2NvKSsKICAgIGdlb21fcGF0aChkYXRhID0gRXJpY19BbHRfTWFyY2gsCiAgICAgICAgICAgICAgYWVzKHggPSBsb25naXR1ZGUsCiAgICAgICAgICAgICAgICAgeSA9IGxhdGl0dWRlLAogICAgICAgICAgICAgICAgIGNvbG9yID0gYWx0aXR1ZGUpKSsKICBzY2FsZV9jb2xvcl9ncmFkaWVudChoaWdoID0gJyNGRjY2MDAnLCBsb3cgPSAnIzY2MDA2NicpKwogIGdlb21fcG9pbnQoZGF0YSA9IEVyaWNfQWx0X01hcmNoLAogICAgICAgICAgICAgYWVzKHggPSBsb25naXR1ZGUsCiAgICAgICAgICAgICAgICAgeSA9IGxhdGl0dWRlKSwKICAgICAgICAgICAgICAgICBjb2xvciA9ICIjMDAwMDAwIiwKICAgICAgICAgICAgICAgICBzaXplID0gMykrCiAgCiAgICBsYWJzKHRpdGxlID0gIkVyaWMncyBGbGlnaHQgQWx0aXR1ZGUgTWFyY2giLAogICAgICAgICBzdWJ0aXRsZSA9ICJUaW1lOiB7ZnJhbWVfYWxvbmd9IikrCiAgCiAgdHJhbnNpdGlvbl9yZXZlYWwoZGF0ZTIpCmFuaW1hdGUoRXJpY0FsdE1hcmNoX2dnYW5pbSwgbmZyYW1lcyA9IDIwMCkKYGBgCgpgYGB7ciwgZXZhbCA9IEZBTFNFLCBlY2hvID0gRkFMU0V9CmFuaW1fc2F2ZSgiRXJpY0FsdE1hcmNoLmdpZiIpCmBgYAoKYGBge3IsIGVjaG8gPSBGQUxTRX0Ka25pdHI6OmluY2x1ZGVfZ3JhcGhpY3MoIkVyaWNBbHRNYXJjaC5naWYiKQpgYGAKCkVyaWMncyBhbHRpdHVkZSBpbiB0aGUgZmlyc3Qgd2VlayBvZiBNYXJjaCB3YXMgYmV0d2VlbiAtNDM4IGZ0IGFuZCAzMTcgZnQuIFRoaXMgaXMgYSBtdWNoIGJyb2FkZXIgcmFuZ2UgdGhhbiBoaXMgYWx0aXR1ZGUgaW4gdGhlIGZpcnN0IHdlZWsgb2YgSmFudWFyeS4gSXQgbWFrZXMgc2Vuc2UgdGhhdCBndWxscyBmbHkgYXQgaGlnaGVyIGFsdGl0dWRlcyBpbiB3YXJtZXIgbW9udGhzIHNpbmNlIHRoZSBwcmV2YWlsaW5nIHdpbmRzIGFyZSBwaWNraW5nIHVwIGluIGZvcmNlLiBCaXJkJ3MgdXNlIHRoZSBzdHJlbmd0aCBvZiBwcmV2YWlsaW5nIHdpbmRzIHRvIHNhdmUgZW5lcmd5IGFzIHRoZSBtb250aHMgZ2V0IHdhcm1lci4gQ29tcGFyZWQgdG8gSmFudWFyeSwgRXJpYyBpcyBub3QgdHJhdmVsaW5nIG91dCB0byBzZWEgYXMgbXVjaCBhbmQgd2hlbiBoZSBkb2VzLCBpdCBpcyBub3QgYXMgZmFyIG9mIGEgZGlzdGFuY2UuIFRoaXMgY291bGQgaW5kaWNhdGUgdGhhdCBwZXJoYXBzIEVyaWMgaXMgdHJhdmVsaW5nIGZvciBhIGZvb2Qgc291cmNlIHRoYXQgYmVjb21lcyBlYXNpZXIgdG8gY2F0Y2ggaW4gd2FybWVyIHdlYXRoZXIsIHN1Y2ggYXMgZmlzaC4gCgojIyBGbGlnaHQgU3BlZWQKIVtdKHllbGxvd2RvdHMuUE5HKQoKYGBge3IsIGV2YWwgPSBGQUxTRSwgZWNobyA9IEZBTFNFfQoKYmlyZF9taWdyYXRpb24xIDwtIGJpcmRfbWlncmF0aW9uICU+JSAKICBtdXRhdGUoZGF0ZTIgPSBkYXRlX3RpbWUpICU+JSAKICBzZWxlY3QoLWRldmljZV9pbmZvX3NlcmlhbCkgJT4lIAogIHNlcGFyYXRlKGRhdGVfdGltZSwgYygiZGF0ZSIsICJ0aW1lIiksIHNlcCA9ICIgIikgJT4lIAogIG11dGF0ZShkYXRlX3RhZyA9IGRhdGUpICU+JSAKICBzZXBhcmF0ZShkYXRlX3RhZywKICAgICAgICAgICBjKCJZZWFyIiwgIk1vbnRoIiwgIkRheSIpKSAlPiUKICBtdXRhdGUoRGF5ID0gYXMubnVtZXJpYyhEYXkpKSAlPiUgCiAgZmlsdGVyKGJpcmRfbmFtZSA9PSAiU2FubmUiLCBNb250aCA9PSAiMDEiLCBEYXkgPD0gNykgJT4lIAogIHJlbmFtZShTcGVlZCA9IHNwZWVkXzJkKSAlPiUgCiAgbXV0YXRlKG1pbl9sYXQgPSBtaW4obGF0aXR1ZGUpLCAjMTMuODg0MDkKICAgICAgICAgbWF4X2xhdCA9IG1heChsYXRpdHVkZSksICMxNC4xNDcwNgkKICAgICAgICAgbWluX2xvbmcgPSBtaW4obG9uZ2l0dWRlKSwgIy0xNy4wNzQ0CQogICAgICAgICBtYXhfbG9uZyA9IG1heChsb25naXR1ZGUpKSAjLTE2Ljc1NTc1CiAKU2FubmUgPC0gZ2V0X3N0YW1lbm1hcCgKICAgIGJib3ggPSBjKGxlZnQgPSAtMTcuMDc0NCwgYm90dG9tID0gMTMuODg0MDksIHJpZ2h0ID0gLTE2Ljc1NTc1LCB0b3AgPSAxNC4xNDcwNiksIAogICAgbWFwdHlwZSA9ICJ0ZXJyYWluIiwKICAgIHpvb20gPSAxMikKClNhbm5lX1BhdGhfQW5pbSA8LSBnZ21hcChTYW5uZSkgKyAKICBnZW9tX3BhdGgoZGF0YSA9IGJpcmRfbWlncmF0aW9uMSwKICAgICAgICAgICAgYWVzKHggPSBsb25naXR1ZGUsCiAgICAgICAgICAgICAgICB5ID0gbGF0aXR1ZGUsCiAgICAgICAgICAgICAgICBjb2xvciA9IFNwZWVkKSkgKwogIGdlb21fcG9pbnQoZGF0YSA9IGJpcmRfbWlncmF0aW9uMSwgCiAgICAgICAgICAgICBhZXMoeCA9IGxvbmdpdHVkZSwKICAgICAgICAgICAgICAgICB5ID0gbGF0aXR1ZGUpLAogICAgICAgICAgICAgc2l6ZSA9IDMpICsKICBsYWJzKHggPSAiTG9uZ2l0dWRlIiwKICAgICAgIHkgPSAiTGF0aXR1ZGUiLAogICAgICAgdGl0bGUgPSAiU2FubmUncyBGbGlnaHQgUGF0aCBvZmYgdGhlIGNvYXN0IG9mIEpvYWwgRmFkaW91dCwgU2VuZWdhbCIsCiAgICAgICBzdWJ0aXRsZSA9ICJEYXRlOiB7ZnJhbWVfYWxvbmd9IikgKwogIHNjYWxlX2NvbG9yX2dyYWRpZW50KGhpZ2ggPSAnIzAwMDAwMCcsCiAgICAgICAgICAgICAgICAgICAgICAgbG93ID0gJyNGRkZGRkYnKSArCiAgdHJhbnNpdGlvbl9yZXZlYWwoYWxvbmcgPSBkYXRlMikKCmFuaW1hdGUoU2FubmVfUGF0aF9BbmltLCBmcHMgPSA1KQoKYGBgCgoKYGBge3IsIGV2YWwgPSBGQUxTRSwgZWNobyA9IEZBTFNFfQphbmltX3NhdmUoIlNhbm5lRmxpZ2h0SmFuLmdpZiIpCmBgYAoKYGBge3IsIGVjaG8gPSBGQUxTRX0Ka25pdHI6OmluY2x1ZGVfZ3JhcGhpY3MoIlNhbm5lRmxpZ2h0SmFuLmdpZiIpCmBgYAoK